#ifndef OBJECT_H
#define OBJECT_H

#include <SDL.h>

class Engine;

//! Klasa Object

class Object {
  public:
    //! Konstruktor
    /*! \param _x wspolrzedna x
        \param _y wspolrzedna y
        *parent wskaznik na rodzica
        *graphic wskaznik na grafike
    */
    Object(unsigned int _x, unsigned int _y, Engine *parent = 0,
        SDL_Surface *graphic = 0);
    virtual ~Object();
    //! Funkcja ustawiajaca wskaznik na swojego rodzica
    void SetParent(Engine *parent) { fParent = parent; }
    //! Funkcja ustawiajaca wskaznik na swoja grafike
    void SetGraphic(SDL_Surface *graphic) { fGraphic = graphic; }
    //! Funkcja zwracajaca wskaznik na swoja grafike
    SDL_Surface * GetGraphic() { return fGraphic; }
    void SetPosition(unsigned int _x, unsigned int _y) { x = _x; y = _y; }
    //! Funkcja zwracajaca czy dany obiekt sie poruszyl
    bool DidMove() { return fDidMove; }
    //! Funkcja ustawiajaca czy dany obiekt sie poruszyl
    void Move(bool move) { fDidMove = move; }

    virtual int Invoke();
    virtual bool ToggleState();

    unsigned int x, y;
  protected:
    SDL_Surface *fGraphic;
    Engine *fParent;
    bool fDidMove;
    bool fState;
};

#endif
